﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.IO;
using System.Configuration;
using System.Text;

namespace XRM.Security.WebUI.MvcHelpers
{
    public class DialogButtonOptions
    {
        public string Id { get; set; }
        public string Text { get; set; }
        public string ContentUrl { get; set; }
        public string Width { get; set; }
        public string UpdateTargetId { get; set; }
        public string UpdateUrl { get; set; }
        public string OnOpen { get; set; }
        public string OnSuccess { get; set; }
        public string Image { get; set; }
        public string ImageButton { get; set; }
        public string ButtonId { get; set; }
        public string ButtonCss { get; set; }
        public bool DefaultSubmit { get; set; }

        public DialogButtonOptions()
        {
            Id = "";
            Text = "";
            ContentUrl = "";
            Width = "";
            UpdateTargetId = "";
            UpdateUrl = "";
            OnOpen = "";
            OnSuccess = "";
            Image = "";
            ButtonId = "";
            ButtonCss = "";
        }
    }

    public static class CustomHelpers
    {
        /// <summary>
        /// Создает элемент управления для вызова диалога
        /// </summary>
        /// <param name="htmlHelper"></param>
        /// <param name="text">Текст для кнопки</param>
        /// <param name="dialogContentUrl">Url для загрузки в диалог</param>        
        /// <param name="dialogWidth">Ширина диалога</param>
        /// <param name="updateTargetId">id div-а в котором нужно обновить данные после успеха в диалоге</param>
        /// <param name="updateUrl">Url для обновления div-а</param>
        /// <param name="dialogId">Id создаваемого диалога</param>
        /// <param name="imageSrc">Путь к картинке</param>
        /// <returns></returns>
        public static MvcHtmlString DialogFormButton(this HtmlHelper htmlHelper, DialogButtonOptions options)
        {
            TagBuilder builder;
            if (string.IsNullOrEmpty(options.Image) && string.IsNullOrEmpty(options.ImageButton))
            {
                builder = new TagBuilder("input");
                builder.Attributes.Add("type", "button");
                builder.Attributes.Add("value", options.Text);
                builder.AddCssClass(options.ButtonCss);
            }
            else if (!string.IsNullOrEmpty(options.Image))
            {
                builder = new TagBuilder("a");
                builder.Attributes.Add("href", "javascript:void(0);");
                builder.Attributes.Add("title", options.Text);

                TagBuilder builderSub = new TagBuilder("i");
                builderSub.Attributes.Add("class", "fa fa-action " + options.Image);

                builder.InnerHtml += builderSub.ToString();
            }
            else
            {
                builder = new TagBuilder("button");
                builder.Attributes.Add("type", "button");
                builder.AddCssClass(options.ButtonCss);

                TagBuilder builderSub = new TagBuilder("span");
                builderSub.Attributes.Add("class", "fa fa-action " + options.ImageButton);
                builderSub.Attributes.Add("aria-hidden", "true");


                builder.InnerHtml += builderSub.ToString() + "<br/>" + options.Text;

            }

            if (!string.IsNullOrEmpty(options.ButtonId))
                builder.Attributes.Add("id", options.ButtonId);

            builder.Attributes.Add("data-dialog-id", options.Id);
            builder.Attributes.Add("data-dialog-url", options.ContentUrl);
            builder.Attributes.Add("data-dialog-width", options.Width);
            builder.Attributes.Add("data-update-target-id", options.UpdateTargetId);
            builder.Attributes.Add("data-update-url", options.UpdateUrl);

            builder.Attributes.Add("data-after-open", options.OnOpen);
            builder.Attributes.Add("data-after-success", options.OnSuccess);

            builder.Attributes.Add("data-default-submit", options.DefaultSubmit?"1":"0");

            builder.AddCssClass("dialogLink");

            return new MvcHtmlString(builder.ToString());
        }
    }
}